package com.zeyuan.rpcclient.netty.future;

import java.util.concurrent.*;

public class futureTest {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //
        //jdkfuture只能同步等待任务结束
        //netty future可以同步等待也可以异步方式
        //netty Promise不仅有nettyFuture功能，而且脱离任务单独存在，只作为两个线程之间传递结果的容器


        //线程池
        ExecutorService executorService = Executors.newFixedThreadPool(2);
        //提交任务
        Future<Integer> future = executorService.submit(new Callable<Integer>() {

            @Override
            public Integer call() throws Exception {
                return null;
            }
        });
        //主线程通过future获取结果
        future.get();

    }

    /*
    * jdkfuture: cancel iscanceled isdone任务是否完成，不能区分是否成功 get获取任务结果，阻塞
    * netty future: getnow获取结果非阻塞，无结果返回null await等待结束，如果失败不抛异常，通过issuccess判定 sync等待结束，任务失败抛出异常 isSuccess cause获取十遍信息非阻塞，没失败返回null addListener添加回调
    * promise： setsuccess设置成功结果 setfailure设置失败结果
    * */
}
